pub trait VecNumToVecStr { fn val(&self)-> Vec<String>; }

impl VecNumToVecStr for Vec<i32> { 
    fn val(&self) -> Vec<String> {
        let mut arr: Vec<String> = Vec::new();
        for v in self {
            arr.push(v.to_string())
        }
        arr
    } 
}

impl VecNumToVecStr for Vec<u32> { 
    fn val(&self) -> Vec<String> {
        let mut arr: Vec<String> = Vec::new();
        for v in self {
            arr.push(v.to_string())
        }
        arr
    } 
}

pub fn index<T:VecNumToVecStr>(value:T) -> Vec<String>{ value.val() }